package team.you.change.util;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 邮件发送
 * @author yuo
 * @date 2021-03-30 10:39:57
 */
public class SendEmail {
//    public static void main(String[] args) {
//       SendEmail.mail("ysh0407@qq.com", "你是麻瓜", "关于你到底是不是一个麻瓜！这件事是有待确认的事情");
//    }

   /**
    * 邮件发送 使用qq邮件服务器 用自己的账号发送
    * @param toEmail 收件人电子邮箱
    * @param title 邮件标题
    * @param body 邮件内容
    */
    public static Result mail(String toEmail, String title, String body){
       Result result = new Result();
       // 发件人电子邮箱
       String from = "zhangyuo9527@qq.com";
       // 指定发送邮件的主机为 smtp.qq.com
       String host = "smtp.qq.com";  //QQ 邮件服务器
       // 获取系统属性
       Properties properties = System.getProperties();
       // 设置邮件服务器
       properties.setProperty("mail.smtp.host", host);
       properties.put("mail.smtp.auth", "true");
       // 获取默认session对象
       Session session = Session.getDefaultInstance(properties, new Authenticator() {
          public PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication("zhangyuo9527@qq.com", "wjavhlodrvnpdcgb"); //发件人邮件用户名、授权码
          }
       });
       try {
          // 创建默认的 MimeMessage 对象
          MimeMessage message = new MimeMessage(session);
          // Set From: 头部头字段
          message.setFrom(new InternetAddress(from));
          // Set To: 头部头字段
          message.addRecipient(Message.RecipientType.TO,
                  new InternetAddress(toEmail));
          // Set Subject: 头部头字段
          message.setSubject(title);
          // 设置消息体
          message.setText(body);
          // 发送消息
          Transport.send(message);
          System.out.println("发送成功");
          result.setMsg("邮箱验证码发送成功");
          return result;
       } catch (MessagingException mex) {
          mex.printStackTrace();
          return YuoUtil.setErrorMsg(mex, result);
       }
    }
}